Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


nomadnet/ui/textui/Main.py 85fe1dc49425679aba6617a88b24bb92a90fb4a7 (85fe1dc4) Text, 9.03 KB

Tff7b72import T7ee787RNS

Tff7b72from T7ee787.T7ee787Network Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Conversations Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Channels Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Directory Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Config Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Interfaces Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Map Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Log Tff7b72import Tff7b72*
Tff7b72from T7ee787.T7ee787Guide Tff7b72import Tff7b72*
Tff7b72import T7ee787urwid

Tff7b72class T56d364SubDisplaysTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffnetwork_display Tff7b72= Te6edf3NetworkDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconversations_display Tff7b72= Te6edf3ConversationsDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffchannels_display Tff7b72= Te6edf3ChannelsDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdirectory_display Tff7b72= Te6edf3DirectoryDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffconfig_display Tff7b72= Te6edf3ConfigDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffinterface_display Tff7b72= Te6edf3InterfaceDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffmap_display Tff7b72= Te6edf3MapDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8fflog_display Tff7b72= Te6edf3LogDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffguide_display Tff7b72= Te6edf3GuideDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)

Tff7b72if Te6edf3appTff7b72.Td2a8fffirstrunTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffguide_display
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffconversations_display

Tff7b72def Td2a8ffactiveTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffactive_display

Tff7b72class T56d364MenuButtonTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffButtonTb4b4b4)Tb4b4b4:
Te6edf3button_left Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff'Ta5d6ff[Ta5d6ff'Tb4b4b4)
Te6edf3button_right Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff'Ta5d6ff]Ta5d6ff'Tb4b4b4)

Tff7b72class T56d364MainFrameTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffFrameTb4b4b4)Tb4b4b4:
Te6edf3FOCUS_CHECK_TIMEOUT Tff7b72= T79c0ff0.25

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3bodyTb4b4b4, Te6edf3headerTff7b72=Tff7b72NoneTb4b4b4, Te6edf3footerTff7b72=Tff7b72NoneTb4b4b4, Te6edf3delegateTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegate Tff7b72= Te6edf3delegate
Tff7b72selfTff7b72.Td2a8ffcurrent_focus Tff7b72= Tff7b72None
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3bodyTb4b4b4, Te6edf3headerTb4b4b4, Te6edf3footerTb4b4b4)

Tff7b72def Td2a8ffkeypress_focus_checkTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3deferredTff7b72=Tff7b72FalseTb4b4b4)Tb4b4b4:
Te6edf3current_focus Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffwidgetTff7b72.Td2a8ffget_focus_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]

Tff7b72if Te6edf3deferredTb4b4b4:
Tff7b72if Te6edf3current_focus Tff7b72!= Tff7b72selfTff7b72.Td2a8ffcurrent_focusTb4b4b4:
Tff7b72selfTff7b72.Td2a8fffocus_changedTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72def Td2a8ffdeferred_focus_checkTb4b4b4(Te6edf3loopTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffkeypress_focus_checkTb4b4b4(Te6edf3deferredTff7b72=Tff7b72TrueTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Te6edf3MainFrameTff7b72.Td2a8ffFOCUS_CHECK_TIMEOUTTb4b4b4, Te6edf3deferred_focus_checkTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcurrent_focus Tff7b72= Te6edf3current_focus

Tff7b72def Td2a8fffocus_changedTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3current_focus Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffwidgetTff7b72.Td2a8ffget_focus_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]
Te6edf3current_focus_path Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffwidgetTff7b72.Td2a8ffget_focus_pathTb4b4b4(Tb4b4b4)
Tff7b72if Tffa657lenTb4b4b4(Te6edf3current_focus_pathTb4b4b4) Tff7b72> T79c0ff1Tb4b4b4:
Tff7b72if Te6edf3current_focus_pathTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72== Ta5d6ff"Ta5d6ffbodyTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffupdate_active_shortcutsTb4b4b4(Tb4b4b4)

Tff7b72if Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4) Tff7b72== Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTb4b4b4:
T8b949e# Needed to refresh indicativelistbox styles on mouse focus change
Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_displayTff7b72.Td2a8fffocus_change_eventTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffmouse_eventTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3colTb4b4b4, Te6edf3rowTb4b4b4, Te6edf3focusTb4b4b4)Tb4b4b4:
Te6edf3current_focus Tff7b72= Tff7b72selfTff7b72.Td2a8ffdelegateTff7b72.Td2a8ffwidgetTff7b72.Td2a8ffget_focus_widgetsTb4b4b4(Tb4b4b4)Tb4b4b4[Tff7b72-T79c0ff1Tb4b4b4]
Tff7b72if Te6edf3current_focus Tff7b72!= Tff7b72selfTff7b72.Td2a8ffcurrent_focusTb4b4b4:
Tff7b72selfTff7b72.Td2a8fffocus_changedTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffcurrent_focus Tff7b72= Te6edf3current_focus
Tff7b72return Tffa657superTb4b4b4(Te6edf3MainFrameTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffmouse_eventTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3eventTb4b4b4, Te6edf3buttonTb4b4b4, Te6edf3colTb4b4b4, Te6edf3rowTb4b4b4, Te6edf3focusTb4b4b4)

Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffkeypress_focus_checkTb4b4b4(Tb4b4b4)
T8b949e#if key == "ctrl q":
T8b949e# raise urwid.ExitMainLoop

Tff7b72return Tffa657superTb4b4b4(Te6edf3MainFrameTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72class T56d364MainDisplayTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3uiTb4b4b4, Te6edf3appTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffui Tff7b72= Te6edf3ui
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app

Tff7b72selfTff7b72.Td2a8ffmenu_display Tff7b72= Te6edf3MenuDisplayTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4, Tff7b72selfTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsub_displays Tff7b72= Te6edf3SubDisplaysTb4b4b4(Tff7b72selfTff7b72.Td2a8ffappTb4b4b4)

Tff7b72selfTff7b72.Td2a8ffframe Tff7b72= Te6edf3MainFrameTb4b4b4(Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidgetTb4b4b4, Te6edf3headerTff7b72=Tff7b72selfTff7b72.Td2a8ffmenu_displayTff7b72.Td2a8ffwidgetTb4b4b4, Te6edf3footerTff7b72=Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffshortcutsTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidgetTb4b4b4, Te6edf3delegateTff7b72=Tff7b72selfTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Tff7b72selfTff7b72.Td2a8ffframe

Tff7b72def Td2a8ffshow_networkTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffnetwork_displayTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_conversationsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconversations_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_channelsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffchannels_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffchannels_displayTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_directoryTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffdirectory_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_mapTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffmap_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_configTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffconfig_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_interfacesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffinterface_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffinterface_displayTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_logTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_display
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_displayTff7b72.Td2a8ffshowTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffshow_guideTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3user_dataTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffguide_display
Tff7b72selfTff7b72.Td2a8ffupdate_active_sub_displayTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffupdate_active_sub_displayTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8ffcontentsTb4b4b4[Ta5d6ff"Ta5d6ffbodyTa5d6ff"Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidgetTb4b4b4, Tff7b72NoneTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffupdate_active_shortcutsTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactive_display Tff7b72!= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_displayTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_displayTff7b72.Td2a8ffkillTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffupdate_active_shortcutsTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffframeTff7b72.Td2a8ffcontentsTb4b4b4[Ta5d6ff"Ta5d6fffooterTa5d6ff"Tb4b4b4] Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8ffactiveTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffshortcutsTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffwidgetTb4b4b4, Tff7b72NoneTb4b4b4)

Tff7b72def Td2a8ffrequest_redrawTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3extra_delayTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(T79c0ff0.25Tff7b72+Te6edf3extra_delayTb4b4b4, Tff7b72selfTff7b72.Td2a8ffredraw_nowTb4b4b4)
Tff7b72def Td2a8ffredraw_nowTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4, Te6edf3dataTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffscreenTff7b72.Td2a8ffclearTb4b4b4(Tb4b4b4)
T8b949e#self.app.ui.loop.draw_screen()

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmenu_displayTff7b72.Td2a8ffstartTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffquitTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3senderTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3logterm_pid Tff7b72= Tff7b72None
Tff7b72if Tff7b72True Tff7b72or Te6edf3RNSTff7b72.Td2a8ffvendorTff7b72.Td2a8ffplatformutilsTff7b72.Td2a8ffis_androidTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_display Tff7b72!= Tff7b72None Tff7b72and Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_displayTff7b72.Td2a8fflog_term Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_displayTff7b72.Td2a8fflog_termTff7b72.Td2a8fflog_term Tff7b72!= Tff7b72NoneTb4b4b4:
Te6edf3logterm_pid Tff7b72= Tff7b72selfTff7b72.Td2a8ffsub_displaysTff7b72.Td2a8fflog_displayTff7b72.Td2a8fflog_termTff7b72.Td2a8fflog_termTff7b72.Td2a8ffpid
Tff7b72if Te6edf3logterm_pid Tff7b72!= Tff7b72NoneTb4b4b4:
Tff7b72import T7ee787osTff7b72, T7ee787signal
Te6edf3osTff7b72.Td2a8ffkillTb4b4b4(Te6edf3logterm_pidTb4b4b4, Te6edf3signalTff7b72.Td2a8ffSIGKILLTb4b4b4)

Tff7b72raise Te6edf3urwidTff7b72.Td2a8ffExitMainLoop


Tff7b72class T56d364MenuColumnsTb4b4b4(Te6edf3urwidTff7b72.Td2a8ffColumnsTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffkeypressTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)Tb4b4b4:
Tff7b72if Te6edf3key Tff7b72== Ta5d6ff"Ta5d6fftabTa5d6ff" Tff7b72or Te6edf3key Tff7b72== Ta5d6ff"Ta5d6ffdownTa5d6ff"Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffhandlerTff7b72.Td2a8ffframeTff7b72.Td2a8fffocus_position Tff7b72= Ta5d6ff"Ta5d6ffbodyTa5d6ff"

Tff7b72return Tffa657superTb4b4b4(Te6edf3MenuColumnsTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ffkeypressTb4b4b4(Te6edf3sizeTb4b4b4, Te6edf3keyTb4b4b4)

Tff7b72class T56d364MenuDisplayTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3UPDATE_INTERVAL Tff7b72= T79c0ff2

Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3appTb4b4b4, Te6edf3handlerTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffapp Tff7b72= Te6edf3app
Tff7b72selfTff7b72.Td2a8ffupdate_interval Tff7b72= Te6edf3MenuDisplayTff7b72.Td2a8ffUPDATE_INTERVAL
Tff7b72selfTff7b72.Td2a8ffg Tff7b72= Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffglyphs

Tff7b72selfTff7b72.Td2a8ffmenu_indicator Tff7b72= Te6edf3urwidTff7b72.Td2a8ffTextTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4)

Te6edf3menu_text Tff7b72= Tb4b4b4(Te6edf3urwidTff7b72.Td2a8ffPACKTb4b4b4, Tff7b72selfTff7b72.Td2a8ffmenu_indicatorTb4b4b4)
Te6edf3button_network Tff7b72= Tb4b4b4(T79c0ff11Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffNetworkTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_networkTb4b4b4)Tb4b4b4)
Te6edf3button_conversations Tff7b72= Tb4b4b4(T79c0ff17Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffConversationsTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_conversationsTb4b4b4)Tb4b4b4)
Te6edf3button_channels Tff7b72= Tb4b4b4(T79c0ff12Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffChannelsTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_channelsTb4b4b4)Tb4b4b4)
Te6edf3button_directory Tff7b72= Tb4b4b4(T79c0ff13Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffDirectoryTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_directoryTb4b4b4)Tb4b4b4)
Te6edf3button_map Tff7b72= Tb4b4b4(T79c0ff7Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffMapTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_mapTb4b4b4)Tb4b4b4)
Te6edf3button_log Tff7b72= Tb4b4b4(T79c0ff7Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffLogTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_logTb4b4b4)Tb4b4b4)
Te6edf3button_config Tff7b72= Tb4b4b4(T79c0ff10Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffConfigTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_configTb4b4b4)Tb4b4b4)
Te6edf3button_interfaces Tff7b72= Tb4b4b4(T79c0ff14Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffInterfacesTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_interfacesTb4b4b4)Tb4b4b4)
Te6edf3button_guide Tff7b72= Tb4b4b4(T79c0ff9Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffGuideTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffshow_guideTb4b4b4)Tb4b4b4)
Te6edf3button_quit Tff7b72= Tb4b4b4(T79c0ff8Tb4b4b4, Te6edf3MenuButtonTb4b4b4(Ta5d6ff"Ta5d6ffQuitTa5d6ff"Tb4b4b4, Te6edf3on_pressTff7b72=Te6edf3handlerTff7b72.Td2a8ffquitTb4b4b4)Tb4b4b4)

T8b949e# buttons = [menu_text, button_conversations, button_node, button_directory, button_map]
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffconfigTb4b4b4[Ta5d6ff"Ta5d6fftextuiTa5d6ff"Tb4b4b4]Tb4b4b4[Ta5d6ff"Ta5d6ffhide_guideTa5d6ff"Tb4b4b4]Tb4b4b4:
Te6edf3buttons Tff7b72= Tb4b4b4[Te6edf3menu_textTb4b4b4, Te6edf3button_conversationsTb4b4b4, Te6edf3button_networkTb4b4b4, Te6edf3button_channelsTb4b4b4, Te6edf3button_logTb4b4b4, Te6edf3button_interfacesTb4b4b4, Te6edf3button_configTb4b4b4, Te6edf3button_quitTb4b4b4]
Tff7b72elseTb4b4b4:
Te6edf3buttons Tff7b72= Tb4b4b4[Te6edf3menu_textTb4b4b4, Te6edf3button_conversationsTb4b4b4, Te6edf3button_networkTb4b4b4, Te6edf3button_channelsTb4b4b4, Te6edf3button_logTb4b4b4, Te6edf3button_interfacesTb4b4b4, Te6edf3button_configTb4b4b4, Te6edf3button_guideTb4b4b4, Te6edf3button_quitTb4b4b4]

Te6edf3columns Tff7b72= Te6edf3MenuColumnsTb4b4b4(Te6edf3buttonsTb4b4b4, Te6edf3dividecharsTff7b72=T79c0ff1Tb4b4b4)
Te6edf3columnsTff7b72.Td2a8ffhandler Tff7b72= Te6edf3handler

Tff7b72selfTff7b72.Td2a8ffupdate_displayTb4b4b4(Tb4b4b4)

Tff7b72selfTff7b72.Td2a8ffwidget Tff7b72= Te6edf3urwidTff7b72.Td2a8ffAttrMapTb4b4b4(Te6edf3columnsTb4b4b4, Ta5d6ff"Ta5d6ffmenubarTa5d6ff"Tb4b4b4)

Tff7b72def Td2a8ffstartTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_display_jobTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffupdate_display_jobTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3event Tff7b72= Tff7b72NoneTb4b4b4, Te6edf3sender Tff7b72= Tff7b72NoneTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffupdate_displayTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffuiTff7b72.Td2a8ffloopTff7b72.Td2a8ffset_alarm_inTb4b4b4(Tff7b72selfTff7b72.Td2a8ffupdate_intervalTb4b4b4, Tff7b72selfTff7b72.Td2a8ffupdate_display_jobTb4b4b4)

Tff7b72def Td2a8ffupdate_displayTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffappTff7b72.Td2a8ffhas_unread_conversationsTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffindicate_unreadTb4b4b4(Tb4b4b4)
Tff7b72elseTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffindicate_normalTb4b4b4(Tb4b4b4)

Tff7b72def Td2a8ffindicate_normalTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmenu_indicatorTff7b72.Td2a8ffset_textTb4b4b4(Tff7b72selfTff7b72.Td2a8ffgTb4b4b4[Ta5d6ff"Ta5d6ffdecoration_menuTa5d6ff"Tb4b4b4]Tb4b4b4)

Tff7b72def Td2a8ffindicate_unreadTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffmenu_indicatorTff7b72.Td2a8ffset_textTb4b4b4(Tff7b72selfTff7b72.Td2a8ffgTb4b4b4[Ta5d6ff"Ta5d6ffunread_menuTa5d6ff"Tb4b4b4]Tb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────